www.gusucode.com > SemCms开源外贸企业网站管理系统 v3.6PHP源码程序 > SemCms开源外贸企业网站管理系统 v3.6/semcms_php_v3.6/semcms_php_v3.6/install/index.php
<?php ini_set('display_errors','off'); !defined('DB_CHARSET') && define('DB_CHARSET','utf8'); // 数据库保存编码, 不可缺少 header('Content-Type:text/html; charset=utf-8' ); // 本程序执行编码 // 显示填写mysql信息的表单 , 并停止 if ( !isset( $_POST['dbinfo'])){ include 'install_form.html'; exit; } // 提交表单后, 获得mysql账号信息 $db = array(); $data = $_POST['dbinfo']; $db['host'] = $data['dbhost']; $db['dbname'] = $data['dbname']; $db['user'] = $data['dbuser']; $db['pwd'] = $data['dbpw']; $db['mknew'] = $data['mk_newdb']; // 导入数据文件 echo "<style>body{ font-size:1em; color:#333;}li{ padding:5px 0px; border-bottom:1px solid #efefef; width:100%; float:left;} a{ color:red;}</style>"; echo "<div style='width:60%; border:1px solid #ccc; padding:10px; margin:auto;clear:both;'><ul><div style='clear:both;'></div><li><h2>数据库安装信息</h2></li>"; $sql_file = dirname(__FILE__)."/semcms.sql"; run_sql_file($sql_file,$db); //删除安装文件 delDirAndFile(dirname(__FILE__)); // 安装完成 , 跳转回首页 echo "<li>+-------------+-------------+-------------+<br>安装完成。... <a href='../'>点击转到首页</a></li>"; echo "</ul><div style='clear:both;'></div></div>"; /* 执行mysql数据文件.参数:数据文件,数据库账号信息 */ function run_sql_file($sql_file,$dbconfig){ $host = $dbconfig['host']; $dbname = $dbconfig['dbname']; $user = $dbconfig['user']; $pwd = $dbconfig['pwd']; $mknew=$dbconfig['mknew']; // 连接mysql数据库 $conn = mysqli_connect($host,$user,$pwd) or die( '<li>连接mysql错误:'.mysqli_connect_error()."</li>"); if ($mknew==1){ //如果选择新建 执行下面两句 // 删除旧的数据库 mysqli_query($conn,"DROP database IF EXISTS {$dbname} ;") or die ("<li>重新建立新的数据库 操作失败,无法删除【旧】数据库, 请检查mysql操作权限。错误信息: \n".mysqli_error($conn)."</li>"); // 重新建立新数据库 mysqli_query($conn,"CREATE DATABASE {$dbname} CHARACTER SET ".DB_CHARSET." ;" ) or die ("<li>无法创建数据库, 请检查mysql操作权限。错误信息: \n".mysqli_error($conn)."</li>"); } // 选择数据库 mysqli_select_db($conn,$dbname) or die("<li>连接数据库名 {$dbname} 错误:\n".mysqli_error($conn)."</li>"); /* ############ 数据文件分段执行 ######### */ $sql_str = file_get_contents($sql_file); $piece = array(); // 数据段 preg_match_all("@([\s\S]+?;)\h*[\n\r]@",$sql_str,$piece); // 数据以分号;\n\r换行 为分段标记 !empty( $piece[1] ) && $piece = $piece[1]; $count = count($piece); if ( $count <= 0 ){ exit('<li>mysql数据文件: '. $sql_file .' , 不是正确的数据文件. 请检查安装包.</li>'); } $tb_list = array(); // 表名列表 preg_match_all( '@CREATE\h+TABLE\h+[`]?([^`]+)[`]?@',$sql_str,$tb_list ); !empty( $tb_list[1] ) && $tb_list = $tb_list[1]; $tb_count = count( $tb_list ); // 开始循环执行 for($i=0;$i<$count ;$i++){ $sql = $piece[$i] ; mysqli_query($conn,"SET character_set_connection='".DB_CHARSET."', character_set_results='".DB_CHARSET."', character_set_client='binary'"); $result = mysqli_query($conn,$sql); // 建表数量 if ( $i < $tb_count ) { echo "<li>创建表: ".$tb_list[ $i ]; if($result){ echo " <font color='green'>成功安装</font> ......</li>"; }else { echo "<font color='red'>失败</font> , 原因:".mysqli_error($conn)."</li>"; } } // 执行其它语句 else { if(!$result){ echo "<li>sql语句执行<font color='red'>失败</font> , 原因:".mysqli_error($conn)."</li>"; } } } //更改数据库配置文件 $template_o = file_get_contents('Sample_db_conn.php'); $templateUrl = '../Include/db_conn.php'; $output = str_replace('<{dataurl>}',$host, $template_o); $output = str_replace('<{datauser}>', $user, $output); $output = str_replace('<{datapassword>}',$pwd, $output); $output = str_replace('<{dataname>}', $dbname, $output); file_put_contents($templateUrl, $output) or die ("<li>无法修改数据库配置文件,请手动修改。错误信息: ".mysqli_error($conn)."</li>"); //更改后台路径 //随机生成后台路径 $ht_filename=""; function Randkey($length){ $key=""; $pattern = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ'; for($i=0;$i<$length;$i++){ $key.=$pattern[rand(0,61)]; } return $key; } $ht_filename=Randkey(6); rename('../A_Admin', '../'.$ht_filename.'_Admin' ) or die ("<li>无法修改后台路径,请查看文件夹Admin权限,或手动更改Admin名称。错误信息:".mysqli_error($conn)."</li>"); echo"<li><font color='red'>网站后台地址为:你的域名+".$ht_filename."_Admin/ </font><font color='red'>请牢记,后台默认帐户:Admin 密码:1 登陆后进行修改</font></li><li><a href='../".$ht_filename."_Admin/'>点击转到后台</a> | <a href='../'>点击转到首页</a></li>"; } // 删除安装文件 function delDirAndFile($dirName){ if ( $handle = opendir("$dirName" ) ) { while ( false !== ( $item = readdir( $handle ) ) ) { if ( $item != "." && $item != ".." ) { if ( is_dir("$dirName/$item") ) { delDirAndFile("$dirName/$item"); }else{ if( unlink("$dirName/$item") )echo "<li>成功删除文件: $dirName/$item</li>"; } } } closedir($handle); if(rmdir($dirName)) echo "<li>成功删除目录: $dirName</li>"; } }